From: Richard M. Stallman Date: Wed, 22 Jun 1994 20:11:29 +0000 (+0000) Subject: (RETURN_UNGCPRO): Swallow semicolon. X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1^2~5^2~91053 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=c47b8d0264eb40a6a428d9b65631729c3cb81b6c;p=emacs.git (RETURN_UNGCPRO): Swallow semicolon. (GCPRO5): New macro. --- diff --git a/src/lisp.h b/src/lisp.h index a66c1c97178..cd3f7fc7c3c 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -1069,6 +1069,14 @@ struct gcpro gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ gcprolist = &gcpro4; } +#define GCPRO5(varname1, varname2, varname3, varname4, varname5) \ + {gcpro1.next = gcprolist; gcpro1.var = &varname1; gcpro1.nvars = 1; \ + gcpro2.next = &gcpro1; gcpro2.var = &varname2; gcpro2.nvars = 1; \ + gcpro3.next = &gcpro2; gcpro3.var = &varname3; gcpro3.nvars = 1; \ + gcpro4.next = &gcpro3; gcpro4.var = &varname4; gcpro4.nvars = 1; \ + gcpro5.next = &gcpro4; gcpro5.var = &varname5; gcpro5.nvars = 1; \ + gcprolist = &gcpro5; } + /* Call staticpro (&var) to protect static variable `var'. */ void staticpro(); @@ -1079,13 +1087,15 @@ void staticpro(); to have a `do ... while' clause around this to make it interact with semicolons correctly, but this makes some compilers complain that the while is never reached. */ -#define RETURN_UNGCPRO(expr) \ - { \ - Lisp_Object ret_ungc_val; \ - ret_ungc_val = (expr); \ - UNGCPRO; \ - return ret_ungc_val; \ - } +#define RETURN_UNGCPRO(expr) \ +do \ + { \ + Lisp_Object ret_ungc_val; \ + ret_ungc_val = (expr); \ + UNGCPRO; \ + return ret_ungc_val; \ + } \ +while (1) /* Defined in data.c */ extern Lisp_Object Qnil, Qt, Qquote, Qlambda, Qsubr, Qunbound;